Page({
  data: {
    bannerList: []
  },

  onLoad() {
    this.getBannerList()
  },

  // 获取轮播图列表
  async getBannerList() {
    try {
      // 获取当前用户openid
      const { result: { openid } } = await wx.cloud.callFunction({
        name: 'quickstartFunctions',
        data: {
          type: 'getOpenId'
        }
      })
      
      const res = await wx.cloud.database()
        .collection('banners')
        .orderBy('sortOrder', 'asc')
        .get()
      const bannerList = res.data.map(item => ({
        ...item,
        canEdit: item._openid === openid // 添加编辑权限字段
      }))
      this.setData({ bannerList })
    } catch (err) {
      console.error('获取轮播图失败:', err)
      if (err.errCode === 'DATABASE_COLLECTION_NOT_EXIST') {
        await this.createBannersCollection()
        return this.getBannerList()
      }
      wx.showToast({ title: '加载失败', icon: 'none' })
    }
  },

  // 创建banners集合
  async createBannersCollection() {
    try {
      console.log('通过云函数创建banners集合...')
      const res = await wx.cloud.callFunction({
        name: 'quickstartFunctions',
        data: {
          type: 'createCollection',
          collectionName: 'banners'
        }
      })
      console.log('云函数创建集合结果:', res)
      
      if (res.result && res.result.success) {
        wx.showToast({ title: '已创建轮播图集合', icon: 'none' })
        return true
      } else {
        throw new Error(res.result?.data || '创建集合失败')
      }
    } catch (err) {
      console.error('创建集合失败:', {
        errCode: err.errCode,
        errMsg: err.errMsg,
        stack: err.stack,
        fullError: err
      })
      wx.showToast({ 
        title: `创建集合失败: ${err.errMsg || err.message}`,
        icon: 'none',
        duration: 3000
      })
      return false
    }
  },

  // 跳转添加页面
  goAddBanner() {
    wx.navigateTo({
      url: '/pages/admin/banner/edit/index'
    })
  },

  // 编辑轮播图
  editBanner(e) {
    const id = e.currentTarget.dataset.id
    const banner = this.data.bannerList.find(item => item._id === id)
    if (!banner.canEdit) {
      wx.showToast({ title: '无权限编辑', icon: 'none' })
      return
    }
    wx.navigateTo({
      url: `/pages/admin/banner/edit/index?id=${id}`
    })
  },

  // 删除轮播图
  deleteBanner(e) {
    const id = e.currentTarget.dataset.id
    const banner = this.data.bannerList.find(item => item._id === id)
    if (!banner.canEdit) {
      wx.showToast({ title: '无权限删除', icon: 'none' })
      return
    }
    wx.showModal({
      title: '提示',
      content: '确定要删除这个轮播图吗？',
      success: async (res) => {
        if (res.confirm) {
          wx.showLoading({ title: '删除中' })
          try {
            // 先获取轮播图数据
            const res = await wx.cloud.database()
              .collection('banners')
              .doc(id)
              .get()
            
            // 删除图片文件
            if (res.data.imageUrl) {
              await wx.cloud.deleteFile({
                fileList: [res.data.imageUrl]
              })
            }
            
            // 删除数据库记录
            await wx.cloud.database()
              .collection('banners')
              .doc(id)
              .remove()
            
            wx.showToast({ title: '删除成功' })
            this.getBannerList()
          } catch (err) {
            console.error('删除失败:', err)
            wx.showToast({ 
              title: `删除失败: ${err.errMsg || err.message}`,
              icon: 'none',
              duration: 3000
            })
          } finally {
            wx.hideLoading()
          }
        }
      }
    })
  },

  // 切换启用状态
  async toggleActive(e) {
    const id = e.currentTarget.dataset.id
    const banner = this.data.bannerList.find(item => item._id === id)
    if (!banner.canEdit) {
      wx.showToast({ title: '无权限操作', icon: 'none' })
      return
    }
    const isActive = e.detail.value
    try {
      await wx.cloud.database()
        .collection('banners')
        .doc(id)
        .update({
          data: { isActive }
        })
      wx.showToast({ title: '操作成功' })
    } catch (err) {
      console.error('操作失败:', err)
      wx.showToast({ title: '操作失败', icon: 'none' })
    }
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.getBannerList().finally(() => {
      wx.stopPullDownRefresh()
    })
  }
})
